#include <stdio.h>
#include <string.h>

/*
大小端存储
    1.大端存储：低地址存储高有效位的数据，高地址存储低有效位的数据。
    2.小端存储：低地址存储低有效位的数据，高地址存储高有效位的数据。

在网络设备中一般使用的是大端存储，其他设备中一般使用的小端存储。
*/
void storage()
{
    unsigned int param = 0x12345678U;
    printf("%p  \n", &param);
    unsigned char *lit_p = (unsigned char *)&param;

    if (*lit_p == 0x78)
    {
        printf("小端存储\n");
    }
    else
    {
        printf("大端存储\n");
    }
}

/*
一维数组
*/
void one_dimensional()
{
    const int arr[5] = {100, 200, 300, 400, 500};
    printf("%d\n", *(arr + 1));
}

void one_point()
{
    long long param = 0xFF;
    long long *p = &param;
    printf("%p %p\n", p, p + 1);
}

/*
    定义一级指针指向一维的数组
*/
void one_point_array()
{
    int arr[5] = {111, 222, 333, 444, 555};
#if 0 
    for (int i = 0; i < 5; i++)
    {
        printf("&arr[%d] = %p\n", i, &arr[i]);
    }
#endif

#if 0
    // 将一维数组名当成一个一级指针使用，访问数组的每个元素及元素的地址
    for (int i = 0; i < 5; i++)
    {
        printf("%p %d \n", (arr + i), *(arr + i));
    }
#endif
}



int main(int argc, char const *argv[])
{
    // storage();
    // one_dimensional();
    // one_point();
    one_point_array();
    /* code */
    return 0;
}
